﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class afiliacionepsController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /afiliacioneps/

        public ActionResult Index(int id)
        {

            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);

            //string area = Convert.ToString(Request.QueryString["query"]);

            var query = entidades.AFILIACIONEPSSERVICIOSPROPIOs
                .Where(aeps => aeps.IdPersonal == id);
            /*if (!String.IsNullOrEmpty(area))
            {
                query = query.Where(a => (a.Nombre).ToUpper().Contains(area.ToUpper()));
            }*/
            var result = (from aeps in query.OrderBy(a => a.IdAfiliacionepsserviciospropio).Skip(start).Take(limit).ToList()
                          join eps in entidades.EPSSERVICIOSPROPIOs on aeps.IdEpsserviciospropio equals eps.IdEpsserviciospropio
                          select new
                          {
                              Id = aeps.IdAfiliacionepsserviciospropio,
                              Poliza = aeps.Poliza,
                              Monto = aeps.Monto,
                              Estado = aeps.Estado,
                              FechaAlta = string.Format("{0:d}", aeps.Fechaalta),
                              FechaBaja = string.Format("{0:d}", aeps.Fechabaja),
                              //Area = a.Nombre,
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /afiliacioneps/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /afiliacioneps/Create

        public ActionResult Create()
        {
            var query = entidades.EPSSERVICIOSPROPIOs.Select(b => new { b.IdEpsserviciospropio, b.Nombre }).OrderBy(b => b.Nombre);
            ViewData["IdEpsserviciospropio"] = new SelectList(query.AsEnumerable(), "IdEpsserviciospropio", "Nombre");

            return View();
        } 

        //
        // POST: /afiliacioneps/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection, AFILIACIONEPSSERVICIOSPROPIO AFILIACIONEPSSERVICIOSPROPIO)
        {
            var query = entidades.EPSSERVICIOSPROPIOs.Select(b => new { b.IdEpsserviciospropio, b.Nombre }).OrderBy(b => b.Nombre);
            ViewData["IdEpsserviciospropio"] = new SelectList(query.AsEnumerable(), "IdEpsserviciospropio", "Nombre");

            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {

                    var caeps = new AFILIACIONEPSSERVICIOSPROPIO();
                    TryUpdateModel(caeps, collection.ToValueProvider());
                    caeps.Estado = true;
                    entidades.AddToAFILIACIONEPSSERVICIOSPROPIOs(caeps);
                    entidades.SaveChanges();
                    //Insertar Pocedure
                    entidades.PRIMERPAGOEPS(caeps.IdPersonal);
                    return Content("OK");
                }
                return View();
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /afiliacioneps/Edit/5
 
        public ActionResult Edit(int id)
        {
            var afilicacione = entidades.AFILIACIONEPSSERVICIOSPROPIOs.FirstOrDefault(ar => ar.IdAfiliacionepsserviciospropio == id);
            var query = entidades.EPSSERVICIOSPROPIOs.Select(b => new { b.IdEpsserviciospropio, b.Nombre }).OrderBy(b => b.Nombre);
            ViewData["IdEpsserviciospropio"] = new SelectList(query.AsEnumerable(), "IdEpsserviciospropio", "Nombre", afilicacione.IdEpsserviciospropio);

            //var earea = entidades.AREAs.Single(ar => ar.IdArea == id);

            //List<SelectListItem> siono = new List<SelectListItem>();
            //siono.Add(new SelectListItem { Text = "NO", Value = "false" });
            //siono.Add(new SelectListItem { Text = "SI", Value = "true" });

            //ViewData["Administracion"] = new SelectList(siono.AsEnumerable(), "value", "text", earea.Administracion);
            //ViewData["ControlaProyectos"] = new SelectList(siono.AsEnumerable(), "value", "text", earea.ControlaProyectos);

            //List<SelectListItem> TipoArea = new List<SelectListItem>();
            //TipoArea.Add(new SelectListItem { Text = "General", Value = "general" });
            //TipoArea.Add(new SelectListItem { Text = "Direccion", Value = "direccion" });
            //TipoArea.Add(new SelectListItem { Text = "Sub Area", Value = "subarea" });

            //ViewData["TipoArea"] = new SelectList(TipoArea.AsEnumerable(), "value", "text", earea.TipoArea);

            return View(afilicacione);
        }

        //
        // POST: /afiliacioneps/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection, AFILIACIONEPSSERVICIOSPROPIO AFILIACIONEPSSERVICIOSPROPIO)
        {

            var ta = entidades.AFILIACIONEPSSERVICIOSPROPIOs.FirstOrDefault(ar => ar.IdAfiliacionepsserviciospropio == id);
            try
            {

                if (ModelState.IsValid)
                {

                    TryUpdateModel(ta);
                    entidades.SaveChanges();
                    return Content("OK");
                }
                return View(ta);
            }
            catch
            {
                return View(ta);
            }

            //try
            //{
            //    var query = entidades.EPSSERVICIOSPROPIOs.Select(b => new { b.IdEpsserviciospropio, b.Nombre }).OrderBy(b => b.Nombre);
            //    ViewData["IdEpsserviciospropio"] = new SelectList(query.AsEnumerable(), "IdEpsserviciospropio", "Nombre");
            //    // TODO: Add update logic here
 
            //    return RedirectToAction("Index");
            //}
            //catch
            //{
            //    return View();
            //}
        }

        //
        // GET: /afiliacioneps/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /afiliacioneps/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            string strResponse = String.Empty;
            var EPSMesCosto = entidades.EPSMESCOSTOes.Single(e => e.IdAfiliacionepsserviciospropio == id);
            var EFP = entidades.AFILIACIONEPSSERVICIOSPROPIOs.Single(e => e.IdAfiliacionepsserviciospropio == id);

            try
            {
                if (EPSMesCosto != null)
                {
                    entidades.EPSMESCOSTOes.DeleteObject(EPSMesCosto);
                    entidades.SaveChanges();

                    if (EFP != null)
                    {
                        entidades.AFILIACIONEPSSERVICIOSPROPIOs.DeleteObject(EFP);
                        entidades.SaveChanges();
                        return Content("OK");
                    }
                    return Content("OK");
                }
                return Content("Error");
            }
            catch (Exception e)
            {
                strResponse = "{success: false,msg:'" + e.Message + "'}";
                return Content(strResponse);
            }
        }
    }
}
